Pruebas locales
Requisitos Previos
-
Python: Verificar tener Python instalado en tu sistema.
-
Docker: Verificar tener Docker instalado en tu sistema.
-
Postman: Verificar tener Postman instalado en tu sistema.
-
Dependencias: Instalar dependencias necesarias ejecutando:
python -m venv [nombre_entorno | venv]
[nombre_entorno | venv]\Scripts\activate
pip install -r requirements.txt
pip list -
Archivo
.env: Crea un archivo.enven el directorio raiz del proyecto con las siguientes variables:ENV=development
SILS_ENV=development
LOG_LEVEL=debug
DB_HOST=sils_mysql_host
DB_PORT=sils_mysql_port
DB_NAME=sils_mysql_dbname
DB_USER=sils_mysql_dbuser
DB_PASSWORD=sils_mysql_dbpassword
BQ_PROJECT=dev
BQ_DATASET=test_dataset
PROJECT_ID=dev
BQ_ENDPOINT="http://localhost:9050/"
BQ_EXTERNAL_QUERY=external_query_connection
INSTANCE_UNIX_SOCKET=instancia_cloudsql_sils_des_sql
TIME_ZONE=America/Argentina/Cordoba
SERVICE_ACCOUNT_EMAIL=tasks_service_account_email
GOOGLE_APPLICATION_CREDENTIALS=secret.json
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
Ejecución del Script con functions-framework
-
Crear un archivo
docker-compose.ymlen el directorio raiz del proyecto con el contenido:services:
db:
image: mysql:latest
container_name: mysql_container
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
ports:
- "${DB_PORT}:3306"
volumes:
- db_data:/var/lib/mysql
networks:
- app_network
bigquery:
image: ghcr.io/goccy/bigquery-emulator:latest
container_name: bigquery_emulator
command: ["--project=dev"]
ports:
- "9050:9050" # Puerto HTTP para consultas
- "9060:9060" # Puerto gRPC (opcional)
volumes:
- bigquery_data:/data
networks:
- app_network
redis:
image: redis:latest
container_name: redis_container
ports:
- "${REDIS_PORT}:6379"
restart: always
networks:
- app_network
volumes:
db_data:
bigquery_data:
networks:
app_network:
driver: bridge -
Levantar el contenedor de Docker con bases de datos de prueba:
docker-compose up --build -d -
En caso de querer eliminar el contenedor:
docker-compose down -v -
Revisar Logs de BigQuery:
docker-compose logs -f bigquery -
Ejecutar servidor de functions-framework para la función
migration_task_processor:functions-framework --target=migration_task_processor --port=8081 --debug -
Probar la función
migration_task_processorenviando por medio de peticion HTTP POST de Postman a la URLhttp://localhost:8081con el body de la petición en formato HTTP:{
"source_table": "incidentesHistoricos",
"dest_table": "historico_incidentes",
"filter_column": "fechaGPS",
"start_marker": 39661120,
"end_marker": 39711522,
"table_structure": [
{ "Field": "id", "Type": "int(11)" },
{ "Field": "fecha", "Type": "datetime" },
...
]
} -
Comprobar correcta inserción de datos en alguna de las tablas mediante Postman:
POST http://localhost:9050/projects/test/queries
Content-Type: application/json
Body:
{
"query": "SELECT * FROM test.test_dataset.historico_incidentes LIMIT 1"
}